/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.config.service;

import com.icinfo.cloud.provider.punish.config.dto.*;
import com.icinfo.cloud.provider.punish.config.model.ConfigBusiParamDocumentInfo;
import com.icinfo.cloud.provider.punish.config.vo.ConfigBusiParamDocumentInfoVo;
import com.icinfo.cloud.provider.punish.config.vo.DocumentInfoVo;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseMainInfoVo;
import com.icinfo.framework.common.web.Result;
import com.icinfo.framework.core.service.BaseService;

import java.util.List;

/**
 * 描述: 业务关联文书配置 config_busi_param_document_info 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2022年02月22日
 */
public interface IConfigBusiParamDocumentInfoService extends BaseService {
    /**
     * 业务关联文书配置分页查询
     * @author liyafeng
     * @date 2022/2/23
      * @param request
     * @return {@link List< ConfigBusiParamDocumentInfoVo>}
     */
    List<ConfigBusiParamDocumentInfoVo> getConfigBusiParamDocumentInfoVoList(ConfigBusiParamDocumentInfoPageRequest request);
    /**
     * 业务关联文书配置保存
     * @author liyafeng
     * @date 2022/2/23
      * @param configBusiParamDocumentInfoDto
     * @return {@link Result< String>}
     */
    Result<String> saveConfigBusiParamDocumentInfoDto(ConfigBusiParamDocumentInfoDto configBusiParamDocumentInfoDto);
    /**
     * 业务关联文书配置修改
     * @author liyafeng
     * @date 2022/2/23
      * @param configBusiParamDocumentInfoDto
     * @return {@link Result< String>}
     */
    Result<String> editConfigBusiParamDocumentInfoDto(ConfigBusiParamDocumentInfoDto configBusiParamDocumentInfoDto);
    /**
     * 业务关联文书配置删除
     * @author liyafeng
     * @date 2022/2/23
      * @param id
     * @return {@link Result< String>}
     */
    Result<String> rmById(String id);
    /**
     * 根据主键获取详情
     * @author liyafeng
     * @date 2022/2/23
      * @param id
     * @return {@link Result< ConfigBusiParamDocumentInfo>}
     */
    Result<ConfigBusiParamDocumentInfo> getDetailById(String id);
    /**
     * 根据文书目录获取详情
     * @author liyafeng
     * @date 2022/2/25
      * @param documentCatalogCode
     * @return {@link ConfigBusiParamDocumentInfo}
     */
    ConfigBusiParamDocumentInfo getDetailByDocumentCatalogCode(String documentCatalogCode);
    /**
     * 生成文书目录编码
     * @author liyafeng
     * @date 2022/2/25
      * @param request
     * @return {@link Result< String>}
     */
    Result<String> genDocumentCatalogCode(GenDocumentCatalogCodeRequest request);
    /**
     * 根据参数配置id获取所有的参数配置下的文书目录
     * @author liyafeng
     * @date 2022/3/1
      * @param busiParamId
     * @return {@link List< DocumentInfoVo>}
     */
    List<DocumentInfoVo> getDocumentInfoByBusiParamId(String busiParamId);

    /**
     * 描述：根据业务参数id和文书种类code查询文书配置信息
     *
     * @param busiParamId      商业参数id
     * @param documentKindCode 文件类型代码
     * @return {@link DocumentInfoVo }
     * @author shishengyao
     * @date 2022/05/18
     */
    ConfigBusiParamDocumentInfo getDocumentInfoByDocumentKindCode(String busiParamId,String documentKindCode);

    /**
     * 描述：根据分组获取文书配置
     *
     * @param queryDto 查询dto
     * @return {@link List<ConfigBusiParamDocumentInfoVo> }
     * @author shishengyao
     * @date 2022/06/23
     */
    List<ConfigBusiParamDocumentInfoVo> getCConfigBusiParamDocumentInfoByGroupList(ConfigBusiParamDocumentInfoQueryDto queryDto);

    /**
     * 描述：根据文书目录编码等信息查询文书配置信息
     *
     * @param caseId              案件id
     * @param caseMainInfo        {@link CaseMainInfoVo}
     * @param documentCatalogCode 文书目录编码
     * @return {@link List<ConfigBusiParamDocumentInfo>} 文书配置信息列表
     * @author xiangyuyu
     * @date 2022/8/2
     * @since 1.3.2
     */
    List<ConfigBusiParamDocumentInfo> getDocumentConfigInfoByDocumentCatalogCode(String caseId, CaseMainInfoVo caseMainInfo, String documentCatalogCode);

    /**
     * 描述：根据文书种类编码等信息查询文书配置信息
     *
     * @param caseId           案件id
     * @param caseMainInfo     {@link CaseMainInfoVo}
     * @param documentKindCode 文书种类编码
     * @return {@link List<ConfigBusiParamDocumentInfo>} 文书配置信息列表
     * @author xiangyuyu
     * @date 2022/8/2
     * @since 1.3.2
     */
    List<ConfigBusiParamDocumentInfo> getDocumentConfigInfoByDocumentKindCode(String caseId, CaseMainInfoVo caseMainInfo, String documentKindCode);
    /**
     * 根据参数id文书目录编码获取文书配置信息
     * @author liyafeng
     * @date 2022/8/8
      * @param busiParamId
     * @param documentCatalogCode
     * @return {@link ConfigBusiParamDocumentInfo}
     */
    ConfigBusiParamDocumentInfo getConfigBusiParamDocumentInfoByBusiParamIdAndCode(String busiParamId, String documentCatalogCode);

    /**
     * 根据需送达文书目录编码获取送达回证配置详情
     *
     * @param sentDocumentCatalogCode
     * @return {@link ConfigBusiParamDocumentInfo}
     * @author zhengqiang
     * @date 2022/10/26
     */
    ConfigBusiParamDocumentInfo getSDHZDetailBySentDocumentCatalogCode(String sentDocumentCatalogCode);

    /**
     * 描述：根据业务参数id和文书种类code查询速结程序文书配置信息
     *
     * @param busiParamId      商业参数id
     * @param documentKindCode 文件类型代码
     * @param isFastCase       是快
     * @return {@link ConfigBusiParamDocumentInfo }
     * @author shishengyao
     * @date 2023/04/19
     */
    ConfigBusiParamDocumentInfo getFastCaseDocumentInfoByDocumentKindCode(String busiParamId,String documentKindCode,String isFastCase);
}
